home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_pas / lister57 / lister.doc < prev    next >
Text File  |  1989-11-11  |  6KB  |  133 lines

  1.      The  Lister program was written in Turbo Pascal to print out
  2. pascal  programs.   It has grown into a rather large and  complex 
  3. program doing many more things than I had originally  invisioned.  
  4. Among  the variety of things which this program does is the orig
  5. inal  which is to print out a pascal program in a condensed  for
  6. mat.   This  means  that up to 75 lines per page are put  on  the 
  7. paper.   A page feed can be forced by the .PA command which word
  8. star  uses.   Remember however that in pascal source  code  these 
  9. must be commented out( "{.PA}" for example ).
  10.  
  11.      Part  of the appeal of the Turbo Pascal package is that  the 
  12. modules can remain small, and still produce a very large program.  
  13. It  is this ability to "Include" files into larger programs which 
  14. required the listing program to do the same thing.   To help  the 
  15. programmer,  the  listing  program separates the modules using  a 
  16. dual  line  number  scheme  which  numbers  the  entire   program 
  17. continuously  and  also numbers each included  module.   You  can 
  18. always  find  out what line a change is needed because  the  line 
  19. number within the module is listed correctly.
  20.  
  21.      Anothe≥  probleφ fo≥ pasca∞ programmer≤ i≤ thσ  locatioε  oµ ì
  22. thσá  call≤á t∩á  procedure≤ anΣ function≤ á whicΦá cros≤á pagσ ì
  23. boundrie≤ oµ thσ listing«á  Wσ jus⌠ can'⌠ seeφ t∩ finΣ thσ referì
  24. enceΣá modulσá oµ  code«á   T∩ hel≡ this¼á  thσá listinτá prograφ ì
  25. insert≤á  int∩  thσ listing¼á  thσ  cross-referencσ  pagσá numbe≥ ì
  26. wherσá thσ  referenceΣ  procedurσ o≥ functioε  caε bσá located«  ì
  27. Iεá addition¼á thσ las⌠ pagσ oµ  thσ listinτ i≤ ß cros≤ inde°á oµ ì
  28. eacΦá á functioε  o≥  procedurσ ¼á wherσ  i⌠  caε bσ founΣá anΣ ì
  29. eacΦ linσ numbe≥ iε thσ maiε  prograφ wherσ thσ  procedurσ o≥á  ì
  30.  functioε  i≤ calledíá  Thi≤ i≤ donσ activel∙ a⌠  lis⌠  timσ s∩ ì
  31. tha⌠á an∙ prograφ  changes(re-arrangements⌐  arσ correctl∙ referì
  32. enced.
  33.  
  34. .paè     To complete the first stage of the program,  a very friendly 
  35. menu was developed to interact with the user.  
  36.  
  37.      To use this program Type "LISTER56 program.ext"  or
  38.                               "LISTER56"
  39.  
  40.      When the program name is included,  the command line is used 
  41. to fill in the information into the program to be listed variable 
  42. and the menu asks whether you want to Edit,  Print, Directory, or 
  43. Quit.
  44.  
  45.      If the program name is not included,  the same menu appears, 
  46. however  you  are  defaulted into the edit option  to  enter  the 
  47. required file to list.
  48.  
  49.      Answer  most questions with a "Y" or "N" key press  and  the 
  50. cursor will advance to the next question.  Numbers require that a 
  51. number be entered.   An Up or Down arrow key will move the cursor 
  52. in the proper direction.   The return key will accept the default 
  53. answer just as a down arrow does.  With this system, the user can 
  54. wander  up and down the input screen changing anything he  wants, 
  55. during the editing phase.
  56.  
  57.      During  the printing process,  the printing can be suspended 
  58. at anytime by pressing any key on the keyboard.  The printing can 
  59. be continued or aborted from that location with another  keypress 
  60. as  directed  by  the  screen.   This can  be  most  useful  when
  61. answering the telephone.
  62. .paè     Thσá prograφá wa≤ enhanceΣ b∙ addinτ aεá automatiπá indexinτ ì
  63. featurσá whicΦ wil∞ cros≤ referencσ eacΦ anΣ ever∙ variablσá useΣ ì
  64. iεá thσá program«á  Thσá lis⌠ i≤á accumulateΣá alphabeticall∙á b∙ ì
  65. variablσá namσ theε b∙ loca∞ procedurσ namσ anΣ finall∙ globally«  ì
  66. Thi≤á featurσ i≤ defaulteΣ off¼á anΣ mus⌠ bσ turneΣ oε b∙ ßá men⌡ ì
  67. selection«  Thi≤ speed≤ u≡ thσ printou⌠ proces≤ anΣ doesn'⌠ wastσ ì
  68. all of that paper until the final version is to be printed.
  69.  
  70. The structure of the program is shown in the following example
  71.  
  72.         32      |+--   begin
  73.         33      ||     assign (F1,filespec);
  74.         34      ||     reset (F1);
  75.         35      ||     count := 1;
  76.         36      ||     diskspace := 0.0;
  77.         37      ||     str(count,str2);
  78.         38      ||     assign (F2,'a:Output'+str2+'.dat');
  79.         39      ||     rewrite (F2);
  80.         40      ||+--  repeat
  81.         41      |||        if diskspace > 300000.0 then
  82.         42      |||+--         begin
  83.         43      ||||           close (F2);
  84.         44      ||||           write (^G,' please insert another blank formatted diskette and press "RETURN" ');
  85.         45      ||||+--        repeat
  86.         46      |||||              ch := ^@;
  87.         47      |||||              if keypressed then
  88.         48      |||||                  read (kbd,ch);
  89.         49      ||||+--            until ch = ^M;
  90.         50      ||||           count := count + 1;
  91.         51      ||||           str(count,str2);
  92.         52      ||||           assign (F2,'a:Output'+str2+'.dat');
  93.         53      ||||           rewrite (F2);
  94.         54      ||||           diskspace := 0.0;
  95.         55      ||||           writeln;
  96.         56      ||||           writeln ('   ...Continuing  ');
  97.         57      |||+--         end;
  98.         58      |||        readln (F1,line);
  99.         59      |||        writeln (F2,line);
  100.         60      |||        diskspace := diskspace + length(line) + 1;
  101.         61      ||+--      until eof(F1);
  102.  
  103.  
  104.      A≤á yo⌡ caε seσ thi≤ make≤ thσ locatinτ thσ Begin-enΣá pair≤ ì
  105. very simple
  106.  
  107.  
  108.      In version 3.5, marking of the reserved words was added due to
  109. programmers requesting it.  You see, I even listen to user comments.
  110. .paèNow for the legal? requirements:
  111.  
  112.      Yo⌡á arσá specificall∙á alloweΣ t∩ usσá and/o≥á modif∙á thi≤ ì
  113. prograφ a≤ lonτ a≤ yo⌡ don'⌠ sel∞ i⌠ fo≥ profit«á  Pleasσ pas≤ i⌠ ì
  114. alonτá (UN-MODIFIED⌐ t∩ you≥ friends«á  Al∞ commercia∞ right≤ fo≥ ì
  115. this program are retained by the author.
  116.  
  117.  
  118. If you find this program usefull, please consider the amount of time
  119. and effort which went into this program.  A donation of $35 is
  120. required to become a registered user of this program, and intitles
  121. you to the source code, and a phone number for any questions.
  122.  
  123. Please mail registrations to:
  124.  
  125.      John Lindsay
  126.      ╡ HighlanΣ St.
  127.      Shrewsbury, Ma. 01545
  128.  
  129.  
  130.      This  concludes the document file,   I hope you  enjoy  this
  131. program.
  132.                     JSL
  133.